// 日志

#pragma once

#include <iostream>
#include <string>

namespace ns_log
{

	// 日志等级
	enum
	{
		INFO,
		DEBUG,
		WARNING,
		ERROR,
		FATAL
	};

	inline std::ostream& Log(const std::string &level, const std::string &file_name, int line)
	{
		std::string res = "[";
		// 添加日志等级
		res += level;
		res += "]";
		// 添加文件名和行数
		res += "[";
		res += file_name;
		res += ":";
		res += std::to_string(line);
		res += "]";
		// 添加时间
		time_t t = time(nullptr);
		struct tm *lt = localtime(&t);
		char time_tmp[32] = {0}; 
		strftime(time_tmp, 31, "%m-%d %T", lt); 
		res += "[";
		res += time_tmp;
		res += "]";

		// cout 本质 内部是包含缓冲区的
		std::cout << res; // 不要endl进行刷新
		return std::cout;
	}
// LOG(INFo) << "message" << "\n";
// 开放式日志
#define LOG(level) Log(#level, __FILE__, __LINE__)
}